package com.bsdsma.fengheguaiapp.service;


import com.bsdsma.fengheguaiapp.dto.CustomerInfoAddDto;
import com.bsdsma.fengheguaiapp.dto.CustomerInfoSearchDto;
import com.bsdsma.fengheguaiapp.entity.CustomerInfo;
import com.bsdsma.fengheguaiapp.dto.PageRetDto;
import com.bsdsma.fengheguaiapp.dto.DataGroupByDateDto;

import java.util.Date;
import java.util.List;

/**
 * 顾客信息业务操作接口声明
 */
public interface CustomerInfoService {

    /**
     * 分页查询顾客信息
     *
     * @param dto   查询顾客信息条件
     * @return      分页数据
     */
    PageRetDto<CustomerInfo> search(CustomerInfoSearchDto dto);

    /**
     * 查询所有顾客信息
     */
    List<CustomerInfo> listAll();

    /**
     * 添加顾客信息
     * @param dto   添加的对象数据
     * @return      添加后的顾客信息对象
     */
    CustomerInfo add(CustomerInfoAddDto dto);

    /**
     * 修改顾客信息
     * @param id    主键ID
     * @param dto   修改数据
     * @return      修改后的顾客信息对象
     */
    CustomerInfo update(Long id, CustomerInfoAddDto dto);

    /**
     * 通过ID查询
     * @param id    主键
     * @return      查询到的顾客信息对象
     */
    CustomerInfo getById(Long id);


    /**
     * 删除顾客信息
     * @param id    顾客信息ID
     */
    void delete(Long id);

    /**
     * 更新顾客信息
     * @param id    顾客信息ID
     */
    int updateById(CustomerInfo entity);

    /**
     * 查询顾客信息数量
     */
    Long count();

    /**
     * 按日期分组查询新增数量
     * @param beginDate 开始时间
     * @param endDate   结束时间
     * @return
     */
    List<DataGroupByDateDto> countByDay(Date beginDate, Date endDate);
}